// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	10/22/2014 5:36:04 PM				
// -----------------------------

#ifndef _TerrainGenerator_h
#define _TerrainGenerator_h

#include "Common.h"

class Application;
class Mesh;

struct TerrainDesc
{
	Float	Rougness;
	Float	RoughnessFalloff;
	Float	BaseOffset;
	UInt32	Subdivisions;
};

class TerrainGenerator
{
public:

	static ITexture2D*	Generate(Application* lpApp, const TerrainDesc& desc, Float** lpOutputData = nullptr);

protected:

	static Float*		GenerateData(Application* lpApp, const TerrainDesc& desc);

private:
	TerrainGenerator();
	~TerrainGenerator();
	TerrainGenerator(const TerrainGenerator& refTerrainGenerator);
	TerrainGenerator& operator=(const TerrainGenerator& refTerrainGenerator);
};

#endif